//函数：1.参数   2.返回值   3.函数的功能  4.函数何时调用

interface ObjProps{
    [propsName:string]:any
}

// function getSearch(str?:string):string|ObjProps{
//     let url = location.search.substr(1);
//     let arr = url.split('&'); //['name=lili','age=10']  ====>  {name:'lili',age:10}

//     let target = {};

//     arr.forEach(item => {
//         let sArr = item.split('=');  //[name,lili]   [age,10]
//         target[sArr[0]] = sArr[1];
//     })
    
//     return str ? target[str] : target  //{name:'lili',age:10}
// }

// console.log(getSearch('age'));


//题目二

//定义接口
// interface TreeProps{
//     tagName:string,
//     props?:ObjProps,
//     children?:TreeProps[]|string
// }

// const JsonTree:TreeProps = {
//     "tagName":'ul',
//     "props":{
//         "className":'list',
//         "data-name":"jsontree"
//     },
//     "children":[
//         {
//             "tagName":'li',
//             "children":[
//                 {
//                     "tagName":'img',
//                     "props":{
//                         "src":"///xxx",
//                         "width":"16px"
//                     }
//                 }
//             ]
//         },
//         {
//             "tagName":'li',
//             "children":[
//                 {
//                     "tagName":"a",
//                     "props":{
//                         "href":"https://www.aliyun.com",
//                         "target":"_black"
//                     },
//                     "children":"阿里云"
//                 }
//             ]
//         }
        
//     ]
// };

// function parseDom(tree:TreeProps):HTMLElement{

//     //创建节点
//     let domNode = document.createElement(tree.tagName);

//     //设置属性
//     if(tree.props){
//         for(let key in tree.props){
//             domNode.setAttribute(key,tree.props[key]);
//         }
//     }

//     //设置子节点
//     if(tree.children){
//         if(Array.isArray(tree.children)){
//             //是数组
//             tree.children.forEach(item => {
//                 domNode.appendChild(parseDom(item));
//             })

//         }else{
//             //不是数组
//             //创建文本节点
//             let txtNode = document.createTextNode(tree.children);
//             domNode.appendChild(txtNode);
//         }
//     }

//     return domNode
// }

// let box = document.querySelector('#box');


// box.appendChild(parseDom(JsonTree))
// console.log(parseDom(JsonTree))


//题目三：

let targetArray:any[] = [1,[2,3],4];

let formater:string = "[a,[b],c]";  // ===> 数组

//replace 


function desc(arr,obj,formatArr){
    formatArr.forEach((item,index) => {
        if(Array.isArray(item)){
            desc(arr[index],obj,item)
        }else{
            obj[item] = arr[index];
        }
    })
}


function destructuringArray (arr:any[],format:string):ObjProps{

    format = format.replace(/([a-z]+)/g,'"$1"');

    let formatArr = JSON.parse(format);

    console.log(arr);

    let obj = {};

    desc(arr,obj,formatArr)
    

    return obj
}

console.log(destructuringArray(targetArray,formater));

